package mx.ipn.pruebas;

import java.util.ArrayList;

import mx.ipn.persistencia.FabricaDeDAOs;
import mx.ipn.persistencia.dao.*;
import mx.ipn.to.*;

public class PruebaDAOs6 {

	public static void main(String[] args) {
		FabricaDeDAOs fabricaMySQL = FabricaDeDAOs
				.getFabricaDeDAOs(mx.ipn.Constantes.FABRICA_DAOS_MYSQL);
		short resultado;

		java.text.SimpleDateFormat simpledf = new java.text.SimpleDateFormat(
				"HH:mm:ss");

		java.util.Date fecha;

		// ***********************************************************************************************
		// TIPOMOTIVO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TIPOMOTIVO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoMotivoDAO tipoMotivoDAO = fabricaMySQL.getTipoMotivoDAO();
			TipoMotivoTO tipoMotivoTO = new TipoMotivoTO((short) 0,
					"Salida a comer", "Tiempo de comida");

			// insert
			if (tipoMotivoDAO.insertTipoMotivo(tipoMotivoTO)) {
				tipoMotivoDAO.insertTipoMotivo(tipoMotivoTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = tipoMotivoDAO.deleteTipoMotivo((short) 5);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			tipoMotivoTO.setIdTipoMotivo((short) 6);
			tipoMotivoTO.setNombre("Comida");

			resultado = tipoMotivoDAO.updateTipoMotivo(tipoMotivoTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("BUSQUEDA POR ID");
			tipoMotivoTO = tipoMotivoDAO.findTipoMotivoById((short) 1);
			if (tipoMotivoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOMOTIVO");
				System.out.println("id_tipoMotivo: "
						+ tipoMotivoTO.getIdTipoMotivo());
				System.out.println("nombre: " + tipoMotivoTO.getNombre());
				System.out.println("descripcion: "
						+ tipoMotivoTO.getDescripcion());

			} else {
				System.out.println("Falla en la seleccion");
			}
			// busca
			System.out.println("BUSQUEDA POR NOMBRE");

			tipoMotivoTO = tipoMotivoDAO.findTipoMotivoByNombre("comida");
			if (tipoMotivoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOMOTIVO");
				System.out.println("id_tipoMotivo: "
						+ tipoMotivoTO.getIdTipoMotivo());
				System.out.println("nombre: " + tipoMotivoTO.getNombre());
				System.out.println("descripcion: "
						+ tipoMotivoTO.getDescripcion());
			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT TIPOMOTIVO+**");
			java.util.Collection<TipoMotivoTO> listTipoMotivoTO = tipoMotivoDAO
					.selectTipoMotivo();
			for (int i = 0; i < listTipoMotivoTO.size(); i++) {
				tipoMotivoTO = ((ArrayList<TipoMotivoTO>) listTipoMotivoTO)
						.get(i);
				System.out.println("TIPOMOTIVO");
				System.out.println("id_tipoMotivo: "
						+ tipoMotivoTO.getIdTipoMotivo());
				System.out.println("nombre: " + tipoMotivoTO.getNombre());
				System.out.println("descripcion: "
						+ tipoMotivoTO.getDescripcion());
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// TIPOBASE
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TIPOBASE>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoBaseDAO tipoBaseDAO = fabricaMySQL.getTipoBaseDAO();
			TipoBaseTO tipoBaseTO = new TipoBaseTO((short) 0,
					"lanzadera de lanzadera", "lanzadera de lanzadera");

			// insert
			if (tipoBaseDAO.insertTipoBase(tipoBaseTO)) {
				tipoBaseDAO.insertTipoBase(tipoBaseTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = tipoBaseDAO.deleteTipoBase((short) 3);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			tipoBaseTO.setIdTipoBase((short) 4);
			tipoBaseTO.setNombre("superlanzadera");

			resultado = tipoBaseDAO.updateTipoBase(tipoBaseTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("BUSQUEDA POR ID");
			tipoBaseTO = tipoBaseDAO.findTipoBaseById((short) 1);
			if (tipoBaseTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOBASE");
				System.out
						.println("id_tipoBase: " + tipoBaseTO.getIdTipoBase());
				System.out.println("nombre: " + tipoBaseTO.getNombre());
				System.out.println("descripcion: "
						+ tipoBaseTO.getDescripcion());

			} else {
				System.out.println("Falla en la seleccion");
			}
			// busca
			System.out.println("BUSQUEDA POR NOMBRE");

			tipoBaseTO = tipoBaseDAO.findTipoBaseByNombre("establecida");
			if (tipoBaseTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOBASE");
				System.out
						.println("id_tipoBase: " + tipoBaseTO.getIdTipoBase());
				System.out.println("nombre: " + tipoBaseTO.getNombre());
				System.out.println("descripcion: "
						+ tipoBaseTO.getDescripcion());
			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT TIPOBASE+**");
			java.util.Collection<TipoBaseTO> listTipoBaseTO = tipoBaseDAO
					.selectTipoBase();
			for (int i = 0; i < listTipoBaseTO.size(); i++) {
				tipoBaseTO = ((ArrayList<TipoBaseTO>) listTipoBaseTO).get(i);
				System.out.println("TIPOBASE");
				System.out
						.println("id_tipoBase: " + tipoBaseTO.getIdTipoBase());
				System.out.println("nombre: " + tipoBaseTO.getNombre());
				System.out.println("descripcion: "
						+ tipoBaseTO.getDescripcion());
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// TIPOTARJETA
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TIPOTARJETA>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TipoTarjetaDAO tipoTarjetaDAO = fabricaMySQL.getTipoTarjetaDAO();
			TipoTarjetaTO tipoTarjetaTO = new TipoTarjetaTO((short) 0,
					"prepago");

			// insert
			if (tipoTarjetaDAO.insertTipoTarjeta(tipoTarjetaTO)) {
				tipoTarjetaDAO.insertTipoTarjeta(tipoTarjetaTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = tipoTarjetaDAO.deleteTipoTarjeta((short) 3);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			tipoTarjetaTO.setIdTipoTarjeta((short) 4);
			tipoTarjetaTO.setNombre("tarjeta de vales");

			resultado = tipoTarjetaDAO.updateTipoTarjeta(tipoTarjetaTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("BUSQUEDA POR ID");
			tipoTarjetaTO = tipoTarjetaDAO.findTipoTarjetaById((short) 1);
			if (tipoTarjetaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOTARJETA");
				System.out.println("id_tipoTarjeta: "
						+ tipoTarjetaTO.getIdTipoTarjeta());
				System.out.println("nombre: " + tipoTarjetaTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}
			// busca
			System.out.println("BUSQUEDA POR NOMBRE");

			tipoTarjetaTO = tipoTarjetaDAO.findTipoTarjetaByNombre("prepago");
			if (tipoTarjetaTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TIPOTARJETA");
				System.out.println("id_tipoTarjeta: "
						+ tipoTarjetaTO.getIdTipoTarjeta());
				System.out.println("nombre: " + tipoTarjetaTO.getNombre());

			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT TIPOTARJETA+**");
			java.util.Collection<TipoTarjetaTO> listTipoTarjetaTO = tipoTarjetaDAO
					.selectTipoTarjeta();
			for (int i = 0; i < listTipoTarjetaTO.size(); i++) {
				tipoTarjetaTO = ((ArrayList<TipoTarjetaTO>) listTipoTarjetaTO)
						.get(i);
				System.out.println("TIPOTARJETA");
				System.out.println("id_tipoTarjeta: "
						+ tipoTarjetaTO.getIdTipoTarjeta());
				System.out.println("nombre: " + tipoTarjetaTO.getNombre());

			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

		// ***********************************************************************************************
		// TURNO
		System.out
				.println("<<<<<<<<<<<<<<<<<<<<<<<<<TURNO>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
		try {

			TurnoDAO turnoDAO = fabricaMySQL.getTurnoDAO();

			fecha = simpledf.parse("06:00:00");
			java.sql.Time horaInicio = new java.sql.Time(fecha.getTime());
			fecha = simpledf.parse("10:00:00");
			java.sql.Time duracion = new java.sql.Time(fecha.getTime());
			fecha = simpledf.parse("00:15:00");
			java.sql.Time tiempoDescanso = new java.sql.Time(fecha.getTime());

			TurnoTO turnoTO = new TurnoTO(0, "primero", horaInicio, duracion,
					tiempoDescanso, (short) 6, true);

			// insert
			if (turnoDAO.insertTurno(turnoTO)) {
				turnoDAO.insertTurno(turnoTO);
				System.out.println("Insertado correctamente");
			} else
				System.out.println("Falla en la insercion");

			// borra
			resultado = turnoDAO.deleteTurno((short) 7);
			if (resultado == 1)
				System.out.println("Borrado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en el borrado");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion al borrar");

			// actualiza
			turnoTO.setIdTurno((short) 4);
			turnoTO.setNombre("tarjeta de vales");

			resultado = turnoDAO.updateTurno(turnoTO);
			if (resultado == 1)
				System.out.println("Actualizado correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la actualizacion");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// activarDesactivar
			turnoTO.setIdTurno((short) 6);

			resultado = turnoDAO.activarDesactivarTurno(turnoTO.getIdTurno(), false);
			if (resultado == 1)
				System.out.println("AcTIVARDes correctamente");
			else if (resultado == 0)
				System.out.println("Falla en la AcTIVARDes");
			else if (resultado == -1)
				System.out.println("Ocurrio una excepcion");

			// Busca
			System.out.println("BUSQUEDA POR ID");
			turnoTO = turnoDAO.findTurnoById((short) 1);
			if (turnoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TURNO");
				System.out.println("id_turno: " + turnoTO.getIdTurno());
				System.out.println("nombre: " + turnoTO.getNombre());
				System.out.println("hora_inicio: " + turnoTO.getHoraInicio());
				System.out.println("descanso: " + turnoTO.getTiempoDescanso());
				System.out.println("duracion: " + turnoTO.getDuracion());
				System.out.println("dias_semana: " + turnoTO.getDiasSemana());

			} else {
				System.out.println("Falla en la seleccion");
			}
			// busca
			System.out.println("BUSQUEDA POR NOMBRE");

			turnoTO = turnoDAO.findTurnoByNombre("vespertino");
			if (turnoTO != null) {
				System.out.println("Busqueda exitosa");

				System.out.println("TURNO");
				System.out.println("id_turno: " + turnoTO.getIdTurno());
				System.out.println("nombre: " + turnoTO.getNombre());
				System.out.println("hora_inicio: " + turnoTO.getHoraInicio());
				System.out.println("descanso: " + turnoTO.getTiempoDescanso());
				System.out.println("duracion: " + turnoTO.getDuracion());
				System.out.println("dias_semana: " + turnoTO.getDiasSemana());

			} else {
				System.out.println("Falla en la seleccion");
			}

			System.out.println("**+SELECT TURNO+**");
			java.util.Collection<TurnoTO> listTurnoTO = turnoDAO.selectTurno();
			for (int i = 0; i < listTurnoTO.size(); i++) {
				turnoTO = ((ArrayList<TurnoTO>) listTurnoTO).get(i);
				System.out.println("TURNO");
				System.out.println("id_turno: " + turnoTO.getIdTurno());
				System.out.println("nombre: " + turnoTO.getNombre());
				System.out.println("hora_inicio: " + turnoTO.getHoraInicio());
				System.out.println("descanso: " + turnoTO.getTiempoDescanso());
				System.out.println("duracion: " + turnoTO.getDuracion());
				System.out.println("dias_semana: " + turnoTO.getDiasSemana());

			}

			System.out.println("**+SELECT TURNO BY DIAS+**");
			listTurnoTO = turnoDAO.selectTurnoByDias((short) 6);
			for (int i = 0; i < listTurnoTO.size(); i++) {
				turnoTO = ((ArrayList<TurnoTO>) listTurnoTO).get(i);
				System.out.println("TURNO");
				System.out.println("id_turno: " + turnoTO.getIdTurno());
				System.out.println("nombre: " + turnoTO.getNombre());
				System.out.println("hora_inicio: " + turnoTO.getHoraInicio());
				System.out.println("descanso: " + turnoTO.getTiempoDescanso());
				System.out.println("duracion: " + turnoTO.getDuracion());
				System.out.println("dias_semana: " + turnoTO.getDiasSemana());

			}

			java.sql.Time inicio = new java.sql.Time(simpledf.parse("06:00:00")
					.getTime());
			java.sql.Time fin = new java.sql.Time(simpledf.parse("14:00:00")
					.getTime());
			System.out.println("**+SELECT TURNO BY RANGOHORAINICIO+**");
			listTurnoTO = turnoDAO.selectTurnoByRangoHorario(inicio, fin);
			for (int i = 0; i < listTurnoTO.size(); i++) {
				turnoTO = ((ArrayList<TurnoTO>) listTurnoTO).get(i);
				System.out.println("TURNO");
				System.out.println("id_turno: " + turnoTO.getIdTurno());
				System.out.println("nombre: " + turnoTO.getNombre());
				System.out.println("hora_inicio: " + turnoTO.getHoraInicio());
				System.out.println("descanso: " + turnoTO.getTiempoDescanso());
				System.out.println("duracion: " + turnoTO.getDuracion());
				System.out.println("dias_semana: " + turnoTO.getDiasSemana());

			}

			System.out.println("**+SELECT TURNO BY RANGODIAS+**");
			listTurnoTO = turnoDAO.selectTurnoByRangoDias((short) 1, (short) 6);
			for (int i = 0; i < listTurnoTO.size(); i++) {
				turnoTO = ((ArrayList<TurnoTO>) listTurnoTO).get(i);
				System.out.println("TURNO");
				System.out.println("id_turno: " + turnoTO.getIdTurno());
				System.out.println("nombre: " + turnoTO.getNombre());
				System.out.println("hora_inicio: " + turnoTO.getHoraInicio());
				System.out.println("descanso: " + turnoTO.getTiempoDescanso());
				System.out.println("duracion: " + turnoTO.getDuracion());
				System.out.println("dias_semana: " + turnoTO.getDiasSemana());

			}

			java.sql.Time duracionn = new java.sql.Time(simpledf.parse(
					"10:00:00").getTime());
			System.out.println("**+SELECT TURNO BY DURACION+**");
			listTurnoTO = turnoDAO.selectTurnoByRangoDuracion(duracionn,
					duracionn);
			if (listTurnoTO != null) {
				for (int i = 0; i < listTurnoTO.size(); i++) {
					turnoTO = ((ArrayList<TurnoTO>) listTurnoTO).get(i);
					System.out.println("TURNO");
					System.out.println("id_turno: " + turnoTO.getIdTurno());
					System.out.println("nombre: " + turnoTO.getNombre());
					System.out.println("hora_inicio: "
							+ turnoTO.getHoraInicio());
					System.out.println("descanso: "
							+ turnoTO.getTiempoDescanso());
					System.out.println("duracion: " + turnoTO.getDuracion());
					System.out.println("dias_semana: "
							+ turnoTO.getDiasSemana());

				}
			}

		} catch (Exception e) {
			System.out.println("Ocurrio una excepcion");
		}

	}

}
